#include "time.h"
#include "shumaguan.h"

unsigned char hour      = 18;
unsigned char minute    = 43;
unsigned char second    = 40;
unsigned int timer_count = 0;

// 定时器0中断服务函数
void timer0_isr() interrupt 1
{
    TH0 = (65536 - 1000) / 256;
    TL0 = (65536 - 1000) % 256;

    timer_count++;
    if (timer_count >= 1000) { // 1s
        timer_count = 0;
        second++;
        if (second >= 60) {
            second = 0;
            minute++;
            if (minute >= 60) {
                minute = 0;
                hour++;
                if (hour >= 24) {
                    hour = 0;
                }
            }
        }
    }
}

void TimeInit()
{

    TMOD = 0x01; // 定时器0工作在模式1
    TH0  = (65536 - 1000) / 256;
    TL0  = (65536 - 1000) % 256;
    ET0  = 1; // 使能定时器0中断
    EA   = 1; // 全局中断使能
    TR0  = 1; // 启动定时器0
}

// 数码管显示函数
void Display()
{
    unsigned char i;
    unsigned char display_data[8];

    // 拆分时间数据
    display_data[0] = hour / 10;
    display_data[1] = hour % 10;
    display_data[2] = 16; // 小数点或分隔符
    display_data[3] = minute / 10;
    display_data[4] = minute % 10;
    display_data[5] = 16; // 小数点或分隔符
    display_data[6] = second / 10;
    display_data[7] = second % 10;

    for (i = 0; i < 8; i++) {
        SetWeiXuan(i + 1);
        if (display_data[i] == 16) {
            // D = 0x00; // 显示分隔符（这里简单显示空白）
            Clear();
        } else {
            // D = NixieTable[display_data[i]];
            SetDuanXuan(display_data[i]);
        }
        // Delay(100); // 延时，控制显示时间
        // D = 0x00; // 消隐
        Clear();
    }
}